package com.zbkj.crmeb.store.service;

import com.utils.vo.dateLimitUtilVo;
import com.zbkj.crmeb.store.response.DataLiveResponse;
import com.zbkj.crmeb.store.response.DataLiveSingleResponse;
import com.zbkj.crmeb.store.response.GoodsBoardResponse;
import org.aspectj.weaver.ast.Test;

import java.util.List;
import java.util.Map;

public interface DataLiveService {

    /**
     * 功能描述: 实时信息
     * @Param: [merIds]
     * @Return: com.zbkj.crmeb.store.response.DataLiveResponse
     * @Author: wangzh
     * @Date: 2022/10/17 14:22
     */
    DataLiveResponse getLiveData(List<Integer> merIds);

    /**
     * 功能描述: 整体看板
     * @Param: [dateLimit, merIds]
     * @Return: com.zbkj.crmeb.store.response.DataLiveResponse
     * @Author: wangzh
     * @Date: 2022/10/17 14:22
     */
    DataLiveResponse getWholeData(dateLimitUtilVo dateLimit, List<Integer> merIds);

    /**
     * 功能描述: 用户访问量
     * @Param: [merIds]
     * @Return: com.zbkj.crmeb.store.response.DataLiveSingleResponse
     * @Author: wangzh
     * @Date: 2022/10/17 14:22
     */
    DataLiveSingleResponse getFlowUserViewsData(List<Integer> merIds);

    /**
     * 功能描述: 访问加购、访问付款转化率
     * @Param: [merIds]
     * @Return: java.util.Map<java.lang.String,com.zbkj.crmeb.store.response.DataLiveSingleResponse>
     * @Author: wangzh
     * @Date: 2022/10/17 18:17
     */
    Map<String, DataLiveSingleResponse> getFlowPurchaseData(List<Integer> merIds);

    /**
     * 功能描述: 获取访客榜
     * @Param: [merIds]
     * @Return: java.util.List<com.zbkj.crmeb.store.response.GoodsBoardResponse>
     * @Author: wangzh
     * @Date: 2022/10/18 11:19
     */
    List<GoodsBoardResponse> getGoodsBoardVisitData(List<Integer> merIds);

    /**
     * 功能描述: 销量榜
     * @Param: [merIds]
     * @Return: java.util.List<com.zbkj.crmeb.store.response.GoodsBoardResponse>
     * @Author: wangzh
     * @Date: 2022/10/18 11:33
     */
    List<GoodsBoardResponse> getGoodsBoardSalesVolumeData(List<Integer> merIds);

    /**
     * 功能描述: 支付金额榜
     * @Param: [merIds]
     * @Return: java.util.List<com.zbkj.crmeb.store.response.GoodsBoardResponse>
     * @Author: wangzh
     * @Date: 2022/10/18 11:33
     */
    List<GoodsBoardResponse> getGoodsBoardPayMoneyData(List<Integer> merIds);

    /**
     * @param dateList
     * @Description: 获取实时支付金额
     * @Return: com.zbkj.crmeb.store.response.DataLiveSingleResponse
     * @Author: wangzh
     * @Date: 2022/10/13 15:56
     */
    DataLiveSingleResponse getLivePayMoney(List<String> dateList, List<Integer> merIds);

    /**
     * @param dateList
     * @param merIds
     * @Description: 获取实时支付订单数
     * @Return: com.zbkj.crmeb.store.response.DataLiveSingleResponse
     * @Author: wangzh
     * @Date: 2022/10/13 16:03
     */
    DataLiveSingleResponse getLivePayOrder(List<String> dateList, List<Integer> merIds);

    /**
     * @param dateList
     * @Description: 获取实时支付人数
     * @Return: com.zbkj.crmeb.store.response.DataLiveSingleResponse
     * @Author: wangzh
     * @Date: 2022/10/13 16:17
     */
    DataLiveSingleResponse getLivePayNum(List<String> dateList, List<Integer> merIds);

    /**
     * @param payMoney
     * @param payOrder
     * @Description: 获取实时客单价
     * @Return: com.zbkj.crmeb.store.response.DataLiveSingleResponse
     * @Author: wangzh
     * @Date: 2022/10/13 16:56
     */
    DataLiveSingleResponse getCustomerUnitPrice(DataLiveSingleResponse payMoney, DataLiveSingleResponse payOrder);

    /**
     * @param dateList
     * @param merIds
     * @Description: 获取退款金额
     * @Return: com.zbkj.crmeb.store.response.DataLiveSingleResponse
     * @Author: wangzh
     * @Date: 2022/10/14 12:06
     */
    DataLiveSingleResponse getRefundPrice(List<String> dateList, List<Integer> merIds);

    /**
     * @param dateList
     * @param merIds
     * @Description: 实时获取新增会员数
     * @Return: com.zbkj.crmeb.store.response.DataLiveSingleResponse
     * @Author: wangzh
     * @Date: 2022/10/14 14:50
     */
    DataLiveSingleResponse getVIPNum(List<String> dateList, List<Integer> merIds);

    /**
     * @param dateList
     * @param merIds
     * @Description: 获取整体看板中支付金额相关信息
     * @Return: com.zbkj.crmeb.store.response.DataLiveSingleResponse
     * @Author: wangzh
     * @Date: 2022/10/16 15:41
     */
    DataLiveSingleResponse getWholePayMoney(List<String> dateList, List<Integer> merIds, dateLimitUtilVo dateLimit, Integer intervalDay);

    /**
     * @param dateList
     * @param merIds
     * @param dateLimit
     * @Description: 获取整体看板中支付订单相关信息
     * @Return: com.zbkj.crmeb.store.response.DataLiveSingleResponse
     * @Author: wangzh
     * @Date: 2022/10/16 18:08
     */
    DataLiveSingleResponse getWholePayOrder(List<String> dateList, List<Integer> merIds, dateLimitUtilVo dateLimit, Integer intervalDay);

    /**
     * @param dateList
     * @param merIds
     * @param dateLimit
     * @Description: 获取整体看板中支付人数相关信息
     * @Return: com.zbkj.crmeb.store.response.DataLiveSingleResponse
     * @Author: wangzh
     * @Date: 2022/10/16 18:13
     */
    DataLiveSingleResponse getWholePayNum(List<String> dateList, List<Integer> merIds, dateLimitUtilVo dateLimit, Integer intervalDay);

    /**
     * @param payMoney
     * @param payOrder
     * @Description: 获取整体面板中客单价信息
     * @Return: com.zbkj.crmeb.store.response.DataLiveSingleResponse
     * @Author: wangzh
     * @Date: 2022/10/16 18:40
     */
    DataLiveSingleResponse getWholeCustomerUnitPrice(DataLiveSingleResponse payMoney, DataLiveSingleResponse payOrder);

    /**
     * @param dateList
     * @param merIds
     * @param dateLimit
     * @Description: 获取整体面板中退款金额信息
     * @Return: com.zbkj.crmeb.store.response.DataLiveSingleResponse
     * @Author: wangzh
     * @Date: 2022/10/16 18:46
     */
    DataLiveSingleResponse getWholeRefundPrice(List<String> dateList, List<Integer> merIds, dateLimitUtilVo dateLimit, Integer intervalDay);

    /**
     * @param dateList
     * @param merIds
     * @param dateLimit
     * @Description: 获取整体面板中新增会员信息
     * @Return: com.zbkj.crmeb.store.response.DataLiveSingleResponse
     * @Author: wangzh
     * @Date: 2022/10/16 18:51
     */
    DataLiveSingleResponse getWholeVIPNum(List<String> dateList, List<Integer> merIds, dateLimitUtilVo dateLimit, Integer intervalDay);
}
